package com.adtech.adms.system.service;

import java.util.List;
import java.util.Map;

import com.adtech.adms.system.datadictionary.DataType;
import com.adtech.core.dao.exp.Expression;
import com.adtech.core.dao.query.Pager;
import com.adtech.core.dao.query.Sort;
import com.adtech.core.exception.ServiceException;
import com.adtech.core.exception.SystemException;

/**
 * 数据字典service
 * 为数据字典定义业务操作接口
 * @author Dormin 
 * @since 2011-6-13 
 * 
 * @Copyright (C) AD Tech Workshop All Right Reserved
 */
public interface DataDictionaryService {

	/**
	 * 
	 * @function 根据数据类型获取所有的值
	 * @param typeId 数据类型id
	 *
	 * @return 值列表
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public List<Object> getValueList(int typeId) throws SystemException;

	/**
	 * 
	 * @function
	 * @param
	 *
	 * @return
	 * @exception
	 *
	 * @author
	 * @history
	 *
	 */
	public List<?> getDataList(Pager pager, Expression expression,Sort sort,DataType dataType) throws SystemException;

	/**
	 * 
	 * @function 根据数据分类和id获取实体对象
	 * @param dataType 数据分类
	 * @param id 主键
	 *
	 * @return
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public Object getByTypeAndId(DataType dataType,Long id) throws SystemException;

	/**
	 * 
	 * @function 根据数据分类和id删除数据
	 * @param dataType 数据分类
	 * @param id 主键
	 *
	 * @return
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public void delete(DataType dataType,String id) throws SystemException;


	/**
	 * 
	 * @function 根据数据分类和id获取实体对象
	 * @param typeId 数据分类id
	 * @param id 主键
	 *
	 * @return
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public Object getByTypeAndId(int typeId,Long id) throws SystemException;

	/**
	 * 
	 * @function 保存对象
	 * @param paramsMap 页面参数
	 * @param dataType 数据分类
	 *
	 * @return
	 * @exception ServiceException
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	@SuppressWarnings("rawtypes")
	public void save(DataType dataType, Map paramsMap) throws ServiceException, SystemException;

//	/**
//	 * 通过指定类型、指定的属性以及属性值查找
//	 * @param typeId 类型id
//	 * @param fieldName 属性名称
//	 * @param fieldValue 属性值
//	 *
//	 * @return 查找结果
//	 * @author Dormin
//	 *
//	 */
//	public List<?> getListByTypeAndField(int typeId,String fieldName, Object fieldValue) throws SystemException;

	/**
	 * 通过指定类型、指定的属性以及属性值查找
	 * @param typeId 类型id
	 * @param fieldName 属性名称
	 * @param fieldValue 属性值
	 *
	 * @return 查找结果（返回单个结果）
	 * @author Dormin
	 */
	public Object getByTypeAndField(int typeId,String fieldName, Object fieldValue) throws SystemException;

	public void enable(DataType dataType,Long id) throws SystemException;
	
	public void disable(DataType dataType,Long id) throws SystemException;
}
